#include "../Include/WhimsyPropertyNet.hpp"

namespace Whms
{
    namespace Property
    {
        namespace Net
        {
            namespace Base
            {
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

                namespace Int8
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Int8

                namespace Int16
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Int16

                namespace Int32
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Int32

                namespace Int64
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Int64

                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

                namespace UInt8
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace UInt8

                namespace UInt16
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace UInt16

                namespace UInt32
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace UInt32

                namespace UInt64
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace UInt64

                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

                namespace Real32
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Real32

                namespace Real64
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Real64

                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

                namespace Vec2
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Vec2

                namespace Vec3
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Vec3

                namespace Vec4
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace Vec4

                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

                namespace IntVec2
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace IntVec2

                namespace IntVec3
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace IntVec3

                namespace IntVec4
                {
                    Type::Type(tData& inDataRef) : tSuper(inDataRef)
                    {

                    }
                } // end of namespace IntVec4

                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////
                //////////////////////////////////////////////////////////////////////////

            } // end of namespace Base
        } // end of namespace Net
    } // end of namespace Property
} // end of namespace Whms


void Testfunc()
{
    ::Whms::Int32::Type t;

    typedef ::Whms::Property::Net::Type<
        ::Whms::Property::Int32::Type,
        ::Whms::Property::Net::RecordMode::eRM_Automatic
    > tAutomaticType;

    tAutomaticType autox(t);


    typedef ::Whms::Property::Net::Type<
        ::Whms::Property::Int32::Type,
        ::Whms::Property::Net::RecordMode::eRM_ManualLast
    > tManualLastType;

    tManualLastType mlx(t);

    typedef ::Whms::Property::Net::Type<
        ::Whms::Property::Int32::Type,
        ::Whms::Property::Net::RecordMode::eRM_ManualMulti
    > tManualMultiType;

    tManualMultiType mmx(t);

}
